#!/usr/bin/env ruby
  
  require 'fox16'
  
  include Fox
  
  GORTS_BLURB = "Icons courtesy of Gort's Icons:\nhttp://www.forrestwalter.com/icons"
  
  class ShutterItem < FXShutterItem
  def initialize(p, text, icon=nil, opts=0)
  super(p, text, icon, opts|LAYOUT_FILL_X|LAYOUT_TOP|LAYOUT_LEFT, :padding => 10, :hSpacing => 10, :vSpacing => 10)
  button.padTop = 2
  button.padBottom = 2
  end
  end
  
  class ShutterButton < FXButton
  def initialize(p, txt, ic=nil)
  super(p, txt, ic, :opts => BUTTON_TOOLBAR|TEXT_BELOW_ICON|FRAME_THICK|FRAME_RAISED|LAYOUT_FILL_X|LAYOUT_TOP|LAYOUT_LEFT)
  self.backColor = p.backColor
  self.textColor = FXRGB(255, 255, 255)
  end
  end
  
  class ShutterWindow < FXMainWindow
  
  # This is just a helper function that loads an ICO file from disk
  # and constructs and returns a ICO icon object.
  
  def loadIcon(filename)
  begin
  filename = File.join("icons", filename)
  icon = nil
  File.open(filename, "rb") do |f|
  icon = FXICOIcon.new(getApp(), f.read)
  end
  icon
  rescue
  raise RuntimeError, "Couldn't load icon: #{filename}"
  end
  end
  
  def initialize(app)
  # Invoke base class initialize first
  super(app, "Look Out!", :opts => DECOR_ALL, :width => 600, :height => 600)
  
  # Menubar along the top
  menubar = FXMenuBar.new(self, LAYOUT_SIDE_TOP|LAYOUT_FILL_X)
  
  # File menu
  filemenu = FXMenuPane.new(self)
  FXMenuCommand.new(filemenu, "Quit\tCtl-Q", nil, getApp(), FXApp::ID_QUIT)
  FXMenuTitle.new(menubar, "&File", nil, filemenu)
  
  # Edit menu
  editmenu = FXMenuPane.new(self)
  FXMenuTitle.new(menubar, "&Edit", nil, editmenu)
  
  # View menu
  viewmenu = FXMenuPane.new(self)
  FXMenuTitle.new(menubar, "&View", nil, viewmenu)
  
  # Favorites menu
  favmenu = FXMenuPane.new(self)
  FXMenuTitle.new(menubar, "Fav&orites", nil, favmenu)
  
  # Tools menu
  toolsmenu = FXMenuPane.new(self)
  FXMenuTitle.new(menubar, "&Tools", nil, toolsmenu)
  
  # Actions menu
  actionsmenu = FXMenuPane.new(self)
  FXMenuTitle.new(menubar, "&Actions", nil, actionsmenu)
  
  # Help menu
  helpmenu = FXMenuPane.new(self)
  FXMenuTitle.new(menubar, "&Help", nil, helpmenu)
  
  # Status bar along the bottom
  status = FXStatusBar.new(self,
  LAYOUT_SIDE_BOTTOM|LAYOUT_FILL_X|STATUSBAR_WITH_DRAGCORNER)
  
  # Main contents area is split left-to-right
  splitter = FXSplitter.new(self, (LAYOUT_SIDE_TOP|LAYOUT_FILL_X|
  LAYOUT_FILL_Y|SPLITTER_TRACKING))
  
  # Shutter area on the left
  @shutter = FXShutter.new(splitter,
  :opts => FRAME_SUNKEN|LAYOUT_FILL_X|LAYOUT_FILL_Y,
  :padding => 0, :hSpacing => 0, :vSpacing => 0)
=begin
  fatBot = loadIcon("FatBot.ico")
  angryGuy = loadIcon("AngryGuyInBunnySuit.ico")
  sawBlade = loadIcon("SawBlade.ico")
  redMacOS = loadIcon("RedMacOS.ico")
  leGoon = loadIcon("LeGoon.ico")
  flippedySwitch = loadIcon("FlippedySwitch.ico")
  net = loadIcon("Net.ico")
=end  
  fatBot = nil
  angryGuy = nil
  sawBlade = nil
  redMacOS = nil
  leGoon = nil
  flippedySwitch = nil
  net = nil
  shutterItem = ShutterItem.new(@shutter, "Lookout Shortcuts", nil, LAYOUT_FILL_Y)
  ShutterButton.new(shutterItem.content, "Lookout Today", fatBot).connect(SEL_COMMAND) { @switcher.current = 0 }
  ShutterButton.new(shutterItem.content, "Inbox", angryGuy).connect(SEL_COMMAND) { @switcher.current = 1 }
  ShutterButton.new(shutterItem.content, "Calendar", sawBlade).connect(SEL_COMMAND) { @switcher.current = 2 }
  ShutterButton.new(shutterItem.content, "Contacts", redMacOS).connect(SEL_COMMAND) { @switcher.current = 3 }
  ShutterButton.new(shutterItem.content, "Tasks", leGoon).connect(SEL_COMMAND) { @switcher.current = 4 }
  ShutterButton.new(shutterItem.content, "Notes", flippedySwitch).connect(SEL_COMMAND) { @switcher.current = 5 }
  ShutterButton.new(shutterItem.content, "Deleted Items", net).connect(SEL_COMMAND) { @switcher.current = 6 }
  
  shutterItem = ShutterItem.new(@shutter, "My Shortcuts")
  ShutterButton.new(shutterItem.content, "Drafts", fatBot).connect(SEL_COMMAND) { @switcher.current = 7 }
  ShutterButton.new(shutterItem.content, "Outbox", angryGuy).connect(SEL_COMMAND) { @switcher.current = 8 }
  ShutterButton.new(shutterItem.content, "Sent Items", sawBlade).connect(SEL_COMMAND) { @switcher.current = 9 }
  ShutterButton.new(shutterItem.content, "Journal", redMacOS).connect(SEL_COMMAND) { @switcher.current = 10 }
  ShutterButton.new(shutterItem.content, "Lookout Update", flippedySwitch).connect(SEL_COMMAND) { @switcher.current = 11 }
  
  shutterItem = ShutterItem.new(@shutter, "Other Shortcuts")
  ShutterButton.new(shutterItem.content, "My Computer", angryGuy).connect(SEL_COMMAND) { @switcher.current = 12 }
  ShutterButton.new(shutterItem.content, "My Documents", net).connect(SEL_COMMAND) { @switcher.current = 13 }
  ShutterButton.new(shutterItem.content, "Favorites", leGoon).connect(SEL_COMMAND) { @switcher.current = 14 }
  
  # Right pane is a switcher
  # For a real application, each panel in the switcher would have real, working contents...
  @switcher = FXSwitcher.new(splitter,
  FRAME_SUNKEN|LAYOUT_FILL_X|LAYOUT_FILL_Y, :padding => 0)
  
  FXLabel.new(@switcher,
  "Lookout Today!\n\n#{GORTS_BLURB}", nil, LAYOUT_FILL_X|LAYOUT_FILL_Y)
  FXLabel.new(@switcher, "Inbox\n\n#{GORTS_BLURB}", nil, LAYOUT_FILL_X|LAYOUT_FILL_Y)
  FXLabel.new(@switcher, "Calendar\n\n#{GORTS_BLURB}", nil, LAYOUT_FILL_X|LAYOUT_FILL_Y)
  FXLabel.new(@switcher, "Contacts\n\n#{GORTS_BLURB}", nil, LAYOUT_FILL_X|LAYOUT_FILL_Y)
  FXLabel.new(@switcher, "Tasks\n\n#{GORTS_BLURB}", nil, LAYOUT_FILL_X|LAYOUT_FILL_Y)
  FXLabel.new(@switcher, "Notes\n\n#{GORTS_BLURB}", nil, LAYOUT_FILL_X|LAYOUT_FILL_Y)
  FXLabel.new(@switcher, "Deleted Items\n\n#{GORTS_BLURB}", nil, LAYOUT_FILL_X|LAYOUT_FILL_Y)
  
  FXLabel.new(@switcher, "Drafts\n\n#{GORTS_BLURB}", nil, LAYOUT_FILL_X|LAYOUT_FILL_Y)
  FXLabel.new(@switcher, "Outbox\n\n#{GORTS_BLURB}", nil, LAYOUT_FILL_X|LAYOUT_FILL_Y)
  FXLabel.new(@switcher, "Sent Items\n\n#{GORTS_BLURB}", nil, LAYOUT_FILL_X|LAYOUT_FILL_Y)
  FXLabel.new(@switcher, "Journal\n\n#{GORTS_BLURB}", nil, LAYOUT_FILL_X|LAYOUT_FILL_Y)
  FXLabel.new(@switcher, "Lookout Update\n\n#{GORTS_BLURB}", nil, LAYOUT_FILL_X|LAYOUT_FILL_Y)
  
  FXLabel.new(@switcher, "My Computer\n\n#{GORTS_BLURB}", nil, LAYOUT_FILL_X|LAYOUT_FILL_Y)
  FXLabel.new(@switcher, "My Documents\n\n#{GORTS_BLURB}", nil, LAYOUT_FILL_X|LAYOUT_FILL_Y)
  FXLabel.new(@switcher, "Favorites\n\n#{GORTS_BLURB}", nil, LAYOUT_FILL_X|LAYOUT_FILL_Y)
  end
  
  def create
  super
  @shutter.width = 1.25*@shutter.width
  show(PLACEMENT_SCREEN)
  end
  end
  
  if __FILE__ == $0
  application = FXApp.new("Shutter", "FoxTest")
  ShutterWindow.new(application)
  application.create
  application.run
  end